package com.coursehub.shared.transaction;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 分布式事务注解
 * 用于标记需要分布式事务管理的方法
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DistributedTransactional {
    
    /**
     * 事务名称
     */
    String value() default "";
    
    /**
     * 事务描述
     */
    String description() default "";
    
    /**
     * 超时时间（毫秒）
     */
    long timeout() default 30000L;
    
    /**
     * 是否异步执行
     */
    boolean async() default false;
    
    /**
     * 失败时是否自动重试
     */
    boolean autoRetry() default false;
    
    /**
     * 最大重试次数
     */
    int maxRetries() default 3;
}